

// import 'package:moonplay/common/event_bus_utils.dart';
// import 'package:moonplay/model/like_list_model.dart';
// import 'package:moonplay/model/video_set_model.dart';
// import 'package:moonplay/pages/common_page/common_text_page.dart';
// import 'package:flutter/material.dart';
// import 'package:moonplay/common/app_common.dart';
// import 'package:moonplay/model/video_detail_model.dart';
// import 'package:moonplay/widgets/video_page.dart';
// import 'package:get/get.dart';

// class VideoDetailPage extends StatefulWidget {
//   final dynamic arguments;

//   const VideoDetailPage({Key key, this.arguments}) : super(key: key);
//   @override
//   _VideoDetailPageState createState() => _VideoDetailPageState();
// }

// class _VideoDetailPageState extends State<VideoDetailPage> with SingleTickerProviderStateMixin {
//   Orientation get orientation => MediaQuery.of(context).orientation;
//   double _height;
//   TabController _tabController;
//   Future _futureBuilderFuture;
//   VideoDetailModel videoDetailModel;
//   LikeListModel likeListModel;
//   VideoSetModel videoSetModel;
  
//   int setNum = 1;  //当前选中剧集
//   String videoPlayUrl;
//   int videoVolume = 0;    //播放进度, 从历史记录过来的时候有用

//   @override
//   void initState() {
//     super.initState();
//     _tabController = TabController(length: 2,vsync: this,);
//     _height = ScreenUtil.getInstance().screenWidth;
//     init();

//     LogUtil.e("打印传递过来的VODID: ${Get.arguments['vodId']}");
//   }

//   @override
//   Widget build(BuildContext context) {
//     return Scaffold(
//       backgroundColor: Colors.black,
//       body: commonFutureBuilder(
//         context,
//         future: _futureBuilderFuture,
//         callWidget: videoDetailModel != null ? bodyWidget() : Container(),
//         callTap: init
//       ),
//     );
//   }

//   Widget bodyWidget(){
//     return Column(
//       children: <Widget>[
//         Container(
//           width: double.infinity,
//           height: orientation == Orientation.portrait ? ScreenUtil().getWidthPx(480) : _height, // 这里随意
//           child: videoPlayUrl != null
//           ? MyVideoPage(
//             url: videoPlayUrl, 
//             isLive: false, 
//             nextEpisode: widgetChildNextEpisode,
//             title: '${videoDetailModel.vodName}${videoSetModel.m3u8List[setNum-1].videoSetName}',
//             isNext: setNum < videoSetModel.m3u8List.length ? true : false,
//             setNum: setNum,
//             videoVolume: videoVolume,
//             data: videoDetailModel
//           )
//           : Container()
//         ),
//         Expanded(
//           child: Container(
//             color: Colors.white,
//             child: Column(
//               children: <Widget>[
//                 Container(
//                   width: double.infinity,
//                   height: ScreenUtil().getWidthPx(88),
//                   alignment: Alignment.centerLeft,
//                   child: TabBar(
//                     isScrollable: true,
//                     //是否可以滚动
//                     controller: _tabController,
//                     labelColor: Color(0xffff426e),
//                     indicatorColor: Color(0xffff426e),
//                     unselectedLabelColor: Color(0xff666666),
//                     labelStyle: TextStyle(fontSize: 15.0),
//                     indicatorSize: TabBarIndicatorSize.label,
//                     tabs: <Widget>[
//                       Tab(text: '详情'),
//                       Tab(text: '相关'),
//                     ],
//                   ),
//                 ),
//                 CommonStyle.bottomLine(),
//                 Expanded(
//                   child: TabBarView(
//                     controller: _tabController,
//                     children: <Widget>[
//                       _widgetDetail(),
//                       _widgetAbout()
//                     ],
//                   ),
//                 )
//               ],
//             ),
//           ),
//         ),
//       ],
//     );
//   }

//   //视频详情
//   Widget _widgetDetail(){
//     return Container(
//       padding: EdgeInsets.symmetric(horizontal: ScreenUtil().getWidthPx(30)),
//       child: CustomScrollView(
//         primary: false,
//         slivers: <Widget>[
//           SliverToBoxAdapter(
//             child: Column(
//               children: <Widget>[
//                 Container(
//                   height: ScreenUtil().getWidthPx(80),
//                   alignment: Alignment.centerLeft,
//                   child: Cmtext('${videoDetailModel.vodName}', style: TextStyle(fontSize: 16, color: Theme.of(context).primaryColor, fontWeight: FontWeight.bold)),
//                 ),
//                 Container(
//                   constraints: BoxConstraints(
//                     minHeight: ScreenUtil().getWidthPx(50),
//                   ),
//                   child: Row(
//                     crossAxisAlignment: CrossAxisAlignment.start,
//                     children: <Widget>[
//                       Cmtext('年份/地区: ', style: TextStyle(fontSize: 14, color: Theme.of(context).primaryColor)),
//                       Expanded(
//                         flex: 1,
//                         child: Container(
//                         child: Cmtext('${videoDetailModel.vodYear} / ${videoDetailModel.vodArea}', style: TextStyle(fontSize: 14, color: Theme.of(context).cardColor)),
//                       ),
//                       )
//                     ],
//                   )
//                 ),
//                 Container(
//                   constraints: BoxConstraints(
//                     minHeight: ScreenUtil().getWidthPx(50),
//                   ),
//                   child: Row(
//                     crossAxisAlignment: CrossAxisAlignment.start,
//                     children: <Widget>[
//                       Cmtext('主演: ', style: TextStyle(fontSize: 14, color: Theme.of(context).primaryColor)),
//                       Expanded(
//                         flex: 1,
//                         child: Container(
//                         child: Cmtext('${videoDetailModel.vodActor}', style: TextStyle(fontSize: 14, color: Theme.of(context).cardColor)),
//                       ),
//                       )
//                     ],
//                   )
//                 ),
//                 Container(
//                   constraints: BoxConstraints(
//                     minHeight: ScreenUtil().getWidthPx(50),
//                   ),
//                   child: Row(
//                     crossAxisAlignment: CrossAxisAlignment.start,
//                     children: <Widget>[
//                       Cmtext('导演: ', style: TextStyle(fontSize: 14, color: Theme.of(context).primaryColor)),
//                       Expanded(
//                         flex: 1,
//                         child: Container(
//                           child: Cmtext('${videoDetailModel.vodDirector}', style: TextStyle(fontSize: 14, color: Theme.of(context).cardColor)),
//                         ),
//                       )
//                     ],
//                   )
//                 ),
//                 SizedBox(height: 10,),
//                 CommonStyle.bottomLine(),
//                 Container(
//                   height: ScreenUtil().getWidthPx(80),
//                   alignment: Alignment.centerLeft,
//                   margin: EdgeInsets.only(bottom: ScreenUtil().getWidthPx(20)),
//                   child: Row(
//                     children: <Widget>[
//                       Cmtext('选集', style: TextStyle(fontSize: 16, color: Theme.of(context).primaryColor, fontWeight: FontWeight.bold)),
//                       SizedBox(width: 4,),
//                       Cmtext('(${videoDetailModel.vodRemarks})', style: TextStyle(fontSize: 14, color: Theme.of(context).cardColor),)
//                     ],
//                   )
//                 ),
//               ],
//             )
//           ),
//           SliverGrid(
//             gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
//               crossAxisCount: 4,
//               crossAxisSpacing: 8.0,
//               mainAxisSpacing: 8.0,
//               childAspectRatio: 1.5,
//             ),
//             delegate: SliverChildBuilderDelegate(
//               (BuildContext context, int index) {
//                 return InkResponse(
//                   highlightColor: Colors.transparent,
//                   radius: 0,
//                   onTap: (){
//                     widgetChildNextEpisode(index: index+1);
//                   },
//                   child: Container(
//                     alignment: Alignment.center,
//                     decoration: BoxDecoration(
//                       color: setNum == index+1 ? Color(0xffcccccc) : Color(0xfff5f8f8),
//                       borderRadius: BorderRadius.all(Radius.circular(2))
//                     ),
//                     child: Cmtext('${videoSetModel.m3u8List[index].videoSetName}', style: TextStyle(fontSize: 12),),
//                   ),
//                 );
//               },
//               childCount: videoSetModel.m3u8List.length > 0 ? videoSetModel.m3u8List.length : 0,
//             ),
//           ),
//           SliverToBoxAdapter(
//             child: Container(height: 60,),
//           )
//         ]
//       )
//     );
//   }

//   //视频相关, 猜你喜欢
//   Widget _widgetAbout(){
//     return Container(
//       padding: EdgeInsets.symmetric(horizontal: ScreenUtil().getWidthPx(30)),
//       child: CustomScrollView(
//         primary: false,
//         slivers: <Widget>[
//           SliverToBoxAdapter(
//             child: Column(
//               children: <Widget>[
//                 Container(
//                   height: ScreenUtil().getWidthPx(80),
//                   alignment: Alignment.centerLeft,
//                   child: Cmtext('简介', style: TextStyle(fontSize: 16, color: Theme.of(context).primaryColor, fontWeight: FontWeight.bold)),
//                 ),
//                 Container(
//                   constraints: BoxConstraints(
//                     minHeight: ScreenUtil().getWidthPx(50)
//                   ),
//                   alignment: Alignment.centerLeft,
//                   child: Cmtext('${videoDetailModel.vodContent}', style: TextStyle(fontSize: 14, color: Theme.of(context).primaryColor),),
//                 ),
//                 SizedBox(height: 20,)
//               ],
//             ),
//           ),
//           likeListModel != null
//           ? SliverToBoxAdapter(
//             child: Column(
//               children: <Widget>[
//                 CommonStyle.bottomLine(),
//                 Container(
//                   height: ScreenUtil().getWidthPx(80),
//                   alignment: Alignment.centerLeft,
//                   child: Cmtext('猜你喜欢', style: TextStyle(fontSize: 16, color: Theme.of(context).primaryColor, fontWeight: FontWeight.bold)),
//                 ),
//               ],
//             ),
//           )
//           : SliverToBoxAdapter(),
//           likeListModel != null
//           ? SliverGrid(
//             gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
//               crossAxisCount: 3,
//               crossAxisSpacing: 3.0,
//               mainAxisSpacing: 3.0,
//               childAspectRatio: 0.56,
//             ),
//             delegate: SliverChildBuilderDelegate(
//               (BuildContext context, int idx) {
//                 return InkResponse(
//                   highlightColor: Colors.transparent,
//                   radius: 0,
//                   onTap: () async {
//                     eventBus.fire(PauseVideo()); 
//                     Get.toNamed('/VideoDetailPage', arguments: {"vodId": likeListModel.records[idx].vodId, "typeId1": likeListModel.records[idx].typeId1}, preventDuplicates: false);
//                   },
//                   child: Container(
//                     child: Stack(
//                       children: <Widget>[
//                         Container(
//                           height: double.infinity,
//                           decoration: BoxDecoration(
//                             borderRadius: BorderRadius.all(Radius.circular(4))
//                           ),
//                           child: Column(
//                             children: <Widget>[
//                               Container(
//                                 height: ScreenUtil.getInstance().screenWidth / 3 / 0.75,
//                                 child: Stack(
//                                   children: <Widget>[
//                                     Container(
//                                       width: double.infinity,
//                                       height: ScreenUtil.getInstance().screenWidth / 3 / 0.75,
//                                       decoration: BoxDecoration(
//                                         borderRadius: BorderRadius.all(Radius.circular(4)),
//                                         image: new DecorationImage(//背景图片
//                                           image: NetworkImage('${likeListModel.records[idx].vodPic}'),
//                                           fit: BoxFit.cover
//                                         ),
//                                       ),
//                                     ),
//                                     Positioned(
//                                       bottom: 0,
//                                       left: 0,
//                                       right: 0,
//                                       child: Container(
//                                         height: ScreenUtil().getWidthPx(60),
//                                         alignment: Alignment.centerLeft,
//                                         padding: EdgeInsets.only(left: ScreenUtil().getWidthPx(10)),
//                                         decoration: BoxDecoration(
//                                           color: Color.fromRGBO(0, 0, 0, 0.7),
//                                           borderRadius: BorderRadius.only(bottomLeft: Radius.circular(4), bottomRight: Radius.circular(4))
//                                         ),
//                                         child: Cmtext('${likeListModel.records[idx].vodRemarks}', style: TextStyle(color: Colors.white, fontSize: 11), overflow: TextOverflow.ellipsis,),
//                                       )
//                                     )
//                                   ],
//                                 ),
//                               ),
//                               Expanded(
//                                 child: Container(
//                                   alignment: Alignment.center,
//                                   child: Cmtext('${likeListModel.records[idx].vodName}', style: TextStyle(fontSize: 13),overflow: TextOverflow.ellipsis),
//                                 ),
//                               ),
//                             ],
//                           ),
//                         ),
//                       ],
//                     )
//                   ),
//                 );
//               },
//               childCount: likeListModel.records.length,
//             ),
//           )
//           : SliverToBoxAdapter(),
//           SliverToBoxAdapter(
//             child: Container(height: 60,),
//           )
//         ]
//       )
//     );
//   }

//   /**
//    * 切换播放源
//    */
//   widgetChildNextEpisode({index}) async {
//     if(index != null) {
//       setState(() {
//         videoPlayUrl = null;
//         setNum = index;
//         videoVolume = 0;
//       });
//     } else {
//       setState(() {
//         setNum++;
//         videoVolume = 0;
//       });
//     }
//     await Future.delayed(Duration(milliseconds: 200));
//     setState(() {
//       videoPlayUrl = videoSetModel.m3u8List[setNum-1].videoSetUrl;
//     });
//   }

//   setVideoPlayUrl() {
//     //如果是从历史列表过来的,则会带着当前播放进度, 这里做判断是否有, 如果有, 则继续历史播放
//     if(Get.arguments['videoVolume'] != null) {
//       setState(() {
//         setNum = Get.arguments['setNum'];
//         videoVolume = Get.arguments['videoVolume'];
//         videoPlayUrl = videoSetModel.m3u8List.length > 0 ? videoSetModel.m3u8List[setNum-1].videoSetUrl : "http://vfx.mtime.cn/Video/2019/03/18/mp4/190318231014076505.mp4";
//       });
//     } else {
//       setState(() {
//         videoPlayUrl = videoSetModel.m3u8List.length > 0 ? videoSetModel.m3u8List[0].videoSetUrl : "http://vfx.mtime.cn/Video/2019/03/18/mp4/190318231014076505.mp4";
//       });
//     }
//   }

//   //网络初始化
//   init(){
//     setState(() {
//       _futureBuilderFuture = initGetIndex(Get.arguments['vodId']);
//     });
//   }

//   //请求集数列表
//   initGetIndex(vodId) async {
//     Map<String, dynamic> postData = {
//       "vodId": vodId,
//       "typeId1": Get.arguments['typeId1']
//     };
//     var _res = await HttpUtil().request("getIdVideoDetail", data: postData, need_login: false);
//     // LogUtil.e(_res);
//     if(_res != null && _res['code'] == 200) {
//       setState(() {
//         videoDetailModel = VideoDetailModel.fromJson(_res['data']);
//       });
//       fiterPlayUrl();
//       getLikeList(videoDetailModel.vodId, videoDetailModel.typeId, videoDetailModel.typeId1);
//     }
//     return _res;
//   }

//   getLikeList(vodId, typeId, typeId1) async {
//     Map<String, dynamic> postData = {
//       "vodId": vodId,
//       "typeId": typeId,
//       "typeId1": typeId1,
//     };
//     var _res = await HttpUtil().request("getTypeId1LikeList", data: postData, need_login: false);
//     // LogUtil.e(_res);
//     if(_res != null && _res['code'] == 200) {
//       setState(() {
//         likeListModel = LikeListModel.fromJson(_res['data']);
//       });
//     }
//     return _res;
//   }

//   fiterPlayUrl(){
//     //转换播放url
//     // _isOneUrl为true时表示只有一条播放地址
//     bool _isOneUrl = videoDetailModel.vodPlayNote == "" ? true : false;
//     String url = videoDetailModel.vodPlayUrl;
//     if(_isOneUrl) {
//       //只有一条播放地址
//       List _m3u8List = [];
//       int ix = url.indexOf("#");
//       if (ix != -1) {
//         List _arrs = url.split("#");
//         for (var i = 0; i < _arrs.length; i++) {
//           String _subUrl = _arrs[i];
//           var _getData = rnUrl(_subUrl);
//           _m3u8List.add(_getData);
//         }
//       } else {
//         _m3u8List.add(rnUrl(url));
//       }
//       var _data = {
//         "m3u8List": _m3u8List,
//         "zuidallList": []
//       };
//       setState(() {
//         videoSetModel = VideoSetModel.fromJson(_data);
//       });
//     } else {
//       //将播放源转换成逗号分割
//       String str = videoDetailModel.vodPlayFrom;
//       String str1 = str.replaceAll(RegExp(r"\$", multiLine:true), "P");
//       List vodPlayFromArrs = str1.replaceAll("PPP", ",").split(",");

//       int ix = url.indexOf("#");
//       if(ix != -1) {
//         /**如果里面有#号, 则还需要判断一下里面是否还有三个$$$, 如果有则转换为#号 */
//         int _usa = url.indexOf("\$\$\$");
//         if(_usa != -1) {
//           url = url.replaceAll(RegExp(r"\$\$\$", multiLine:true), "#");
//         }

//         List _arrs = url.split("#");
//         List _videoList = [];
//         for (var i = 0; i < _arrs.length; i++) {
//           String _subUrl = _arrs[i];
//           var _getData = rnUrl(_subUrl);
//           _videoList.add(_getData);
//         }

//         List _m3u8List = [];
//         List _zuidallList = [];
        
//         String _getvodUrl = _videoList[0]['video_set_url'];
//         if(vodPlayFromArrs.length > 1) {
//           if (_getvodUrl.substring(_getvodUrl.length - 5) == ".m3u8") {
//             for (var w = 0; w < (_videoList.length-1)/2; w++) {
//               _m3u8List.add(_videoList[w]);
//             }
//             var _id = (_videoList.length-1)/2;
//             String _io = _id.toStringAsFixed(0);
//             int _tt = int.parse(_io);

//             for (var t = _tt; t < _videoList.length; t++) {
//               _zuidallList.add(_videoList[t]);
//             }
//           } else {
//             for (var w = 0; w < (_videoList.length-1)/2; w++) {
//               _zuidallList.add(_videoList[w]);
//             }
//             var _id = (_videoList.length-1)/2;
//             String _io = _id.toStringAsFixed(0);
//             int _tt = int.parse(_io);

//             for (var t = _tt; t < _videoList.length; t++) {
//               _m3u8List.add(_videoList[t]);
//             }
//           }
//         }
        
//         var _data = {
//           "m3u8List": _m3u8List,
//           "zuidallList": _zuidallList
//         };
//         setState(() {
//           videoSetModel = VideoSetModel.fromJson(_data);
//         });
//         LogUtil.e(videoSetModel.m3u8List.length);
//       } else {
//         int idx = url.indexOf("\$\$\$");
//         if(idx != -1) {
//           List _arrs = url.split("\$\$\$");
//           List _videoList = [];
//           for (var i = 0; i < _arrs.length; i++) {
//             String _subUrl = _arrs[i];
//             var _getData = rnUrl(_subUrl);
//             _videoList.add(_getData);
//           }

//           List _m3u8List = [];
//           List _zuidallList = [];
        
//           String _getvodUrl = _videoList[0]['video_set_url'];
//           if(vodPlayFromArrs.length > 1) {
//             if (_getvodUrl.substring(_getvodUrl.length - 5) == ".m3u8") {
//               for (var w = 0; w < (_videoList.length-1)/2; w++) {
//                 _m3u8List.add(_videoList[w]);
//               }
//               var _id = (_videoList.length-1)/2;
//               String _io = _id.toStringAsFixed(0);
//               int _tt = int.parse(_io);

//               for (var t = _tt; t < _videoList.length; t++) {
//                 _zuidallList.add(_videoList[t]);
//               }
//             } else {
//               for (var w = 0; w < (_videoList.length-1)/2; w++) {
//                 _zuidallList.add(_videoList[w]);
//               }
//               var _id = (_videoList.length-1)/2;
//               String _io = _id.toStringAsFixed(0);
//               int _tt = int.parse(_io);

//               for (var t = _tt; t < _videoList.length; t++) {
//                 _m3u8List.add(_videoList[t]);
//               }
//             }
//             // for (var w = 0; w < (_videoList.length-1)/2; w++) {
//             //   _m3u8List.add(_videoList[w]);
//             // }
//             // var _id = (_videoList.length-1)/2;
//             // String _io = _id.toStringAsFixed(0);
//             // int _tt = int.parse(_io);

//             // for (var t = _tt; t < _videoList.length; t++) {
//             //   _zuidallList.add(_videoList[t]);
//             // }
//           }
          
//           var _data = {
//             "m3u8List": _m3u8List,
//             "zuidallList": _zuidallList
//           };
//           setState(() {
//             videoSetModel = VideoSetModel.fromJson(_data);
//           });
//         }
//       }
//     }
//     setVideoPlayUrl();
//   }

//   rnUrl(url){
//     Map<String, String> rnData = {
//       "video_set_name": "",
//       "video_set_url": ""
//     };
//     int _isIdx = url.indexOf(RegExp(r"\$"));
//     //_isIdx!=-1时表示地址中找到了字符$,对播放地址进行分解
//     if(_isIdx != -1) {
//       /**
//        * video_set_name=剧集名称
//        * video_set_url=剧集播放地址
//        */
      
//       String video_set_name = url.substring(0, _isIdx);
//       String video_set_url = url.substring(_isIdx+1);
      
//       rnData = {
//         'video_set_name': video_set_name,
//         'video_set_url': video_set_url
//       };
//     }
    
//     return rnData;
//   }
// }